/**Set 表示集合 用于去重快速查找
 * Map 表示用于存储键值对，适合需要快速查找、存储对象键等场景。
 * 弱引用：弱引用是一种特殊的引用，它不会阻止对象被垃圾回收。即使存在弱引用，垃圾回收器仍然会回收该对象，只要没有任何强引用指向它
 * weakSet 只能存放对象，不能存放基本类型 不可以遍历
 *
 * weakMap key 只能是对象，不可遍历
*/

const set = new Set([1, 2, 3, 4, 5])
const result = set.has(1)
set.add(1)
console.log(set)
console.log(set.size)


const map = new Map([['a', {name: 'a'}]])
console.log(map)
console.log(map.get('a'))


//weakSet example
let cache = new WeakSet();
let obj1 = { id: 1 };
let obj2 = { id: 2 };
// 添加对象到 WeakSet 中
cache.add(obj1);
cache.add(obj2);
// 检查对象是否存在于 WeakSet 中
console.log(cache.has(obj1)); // true
console.log(cache.has(obj2)); // true
// 删除一个对象
cache.delete(obj1);
console.log(cache.has(obj1)); // false
// 当 obj2 不再被其他地方引用时，垃圾回收会自动清除 obj2
obj2 = null; // obj2 被垃圾回收


